// http/index.js
import axios from 'axios'
import { getQueryVariable, judgeClient } from '../assets/js/tools'
// import {
//     ElLoading,
//     ElMessage
// } from 'element-plus';
//创建axios的一个实例 
var instance = axios.create({
  baseURL: import.meta.env.VITE_BASE_API, //接口统一域名
  timeout: 30000, //设置超时
  headers: {
    'Content-Type': 'application/json;charset=UTF-8;',
  }
})
let loading;
//正在请求的数量
// let requestCount = 0
// //显示loading
// const showLoading = () => {
//     if (requestCount === 0 && !loading) {
//         loading = ElLoading.service({
//             text: "Loading  ",
//             background: 'rgba(0, 0, 0, 0.7)',
//             spinner: 'el-icon-loading',
//         })
//     }
//     requestCount++;
// }
//隐藏loading
// const hideLoading = () => {
//     requestCount--
//     if (requestCount == 0) {
//         loading.close()
//     }
// }

//请求拦截器 
instance.interceptors.request.use((config) => {
  // showLoading()
  // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
  // const token = window.localStorage.getItem('token');
  const token = getQueryVariable('token')
  // token && (config.headers.Authorization = token)
  //若请求方式为post，则将data参数转为JSON字符串
  if (!config.data) config.data = {}
  if (token.length > 0) config.data.token = token;
  config.data.system = judgeClient();
  if (config.method === 'post') {
    let contentType = 'application/x-www-form-urlencoded; charset=UTF-8;';
    if (config.contentType) {
      contentType = config.contentType;
    }
    config.headers = {
      'Content-Type': contentType,
    };
  }
  return config;
}, (error) =>
  // 对请求错误做些什么
  Promise.reject(error));

//响应拦截器
instance.interceptors.response.use((response) => {
  // hideLoading()
  //响应成功
  if (response.data.code != 200) {
    return Promise.reject(response.data);
  }
  return response.data;
}, (error) => {
  console.log(error)
  //响应错误
  if (error.response && error.response.status) {
    // ElMessage.error(message);
    return Promise.reject(error);
  }
  return Promise.reject(error);
});

export default instance;
